package cache

import (
	"gitee.com/gousing/cache/storage"
)

// -----------------------------------------------------------
// Global Storage 默认缓存仓库
// Driver: Get Bool 接口代理
// -----------------------------------------------------------

// GetBool 获取 bool 类型的缓存值, 如果不存在或已经过期则返回false
//   - 支持自动转换类型: bool, string, intX, uintX, floatX 以及实现了 values.Booler 适配接口的类型
func GetBool(key string) bool {
	val, _ := GetBoolE(key)
	return val
}

// GetBoolD 获取 bool 型的缓存值, 如果不存在或已经过期则返回指定的 defaultVal 默认值
//   - 支持自动转换类型: bool, string, intX, uintX, floatX 以及实现了 values.Booler 适配接口的类型
func GetBoolD(key string, defaultVal bool) bool {
	val, err := GetBoolE(key)
	if err != nil {
		return defaultVal
	}
	return val
}

// GetBoolE 获取 bool 类型的缓存值, 如果不存在或已经过期则返回空值和错误信息
//   - 支持自动转换类型: bool, string, intX, uintX, floatX 以及实现了 values.Booler 适配接口的类型
func GetBoolE(key string) (bool, error) {
	if key == "" {
		return false, storage.ErrKeyIsEmpty
	}
	var val bool
	err := GetDefault().Scan(key, &val)
	return val, err
}
